High-performance computer systems such as supercomputers typically include large numbers of compute nodes that access a parallel file system, distributed file system or other type of cluster file system. A cluster file system as the term is broadly used herein generally allows multiple client devices to share access to files over a network.
One well-known cluster file system is the Lustre file system. Lustre is a Linux-based high-performance cluster file system utilized for computer clusters ranging in size from small workgroup clusters to large-scale, multi-site clusters. Lustre can readily scale to support tens of thousands of clients, petabytes of storage, and hundreds of gigabytes per second of aggregate input-output (JO) throughput. Due to its high performance and scalability, Lustre is utilized in many supercomputers, as well as other high-performance computing environments, including large enterprise data centers. Other examples of cluster file systems include distributed file systems such as Hadoop Distributed File System (HDFS).
There are a number of significant issues relating to interfacing a high-performance computer system to a cluster file system. For example, it is important to take periodic checkpoints of the high-performance computer system and to store those checkpoints in the cluster file system, so as to facilitate recovery from failures. However, in typical conventional arrangements, a variety of other types of IO operations need to be carried out on a substantially continuous basis between the high-performance computer system and the cluster file system.
It can therefore be difficult to ensure that the desired checkpoints are properly written to the cluster file system in a manner that does not cause undue interference with the other types of JO operations directed to that system. Also, conflicting priorities among the different types of IO operations can cause checkpoints to be dropped before being written to the cluster file system, leading to problems in failure recovery.